home *** CD-ROM | disk | FTP | other *** search
/ Young Minds / Young Minds Interactive CD-ROM.ISO / spacewar / shutdown.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-05-31  |  1.5 KB  |  76 lines

  1. /*
  2.  * Spacewar - shutdown (gracefully) the spacewar game
  3.  *
  4.  * Copyright 1984 obo Systems, Inc.
  5.  * Copyright 1984 Dan Rosenblatt
  6.  */
  7.  
  8. #include "spacewar.h"
  9. #include "universe.h"
  10. #include "login.h"
  11.  
  12. #ifdef VMS
  13. #    include <ssdef.h>
  14.     extern short inmlbx;
  15. #endif /* VMS */
  16.  
  17. VOID shutdown(e)
  18. int e;
  19. {
  20.     register struct login *plogin;
  21.     int i;
  22.     extern int errno;
  23.  
  24. #ifdef DEBUG
  25.     DBG("shutdown(%d)\n",e);
  26. #endif
  27.  
  28.     /* don't update the universe any more */
  29.     alarm(0);
  30.  
  31.     /* update objects, crafts */
  32.     objupdate();
  33.     crftupdate((struct login *)0);
  34.  
  35.     /* notify and log all players off */
  36.     for (plogin=loginlst,i=MAXLOGIN;i-- > 0;++plogin)
  37.         if (plogin->ln_tty) {
  38.             if (plogin->ln_play.ip_ptr) {
  39.                 plogin->ln_play.ip_ptr = NULL;
  40.                 output(plogin,'E',0,0);
  41.             }
  42.             output(plogin,'B',0,0);
  43.             output(plogin,'C',0,"\n\nSpacewar has been shut down\n");
  44.             output(plogin,0,0,0);
  45.             logoff(plogin);
  46.         }
  47.  
  48.     /* remove communication files */
  49. #ifdef BSD
  50.     if (unlink(SWLGNFILE)) perror(SWLGNFILE);
  51.     if (unlink(SWPIDFILE)) perror(SWPIDFILE);
  52. #else /* VMS SYSIII SYSV */
  53. #ifdef VMS
  54.     if ((i=sys$delmbx(inmlbx)) != SS$_NORMAL) {
  55.         perror("delete mlbx 2");
  56. #ifdef DEBUG
  57.         VDBG("shutdown delmbx()=%d, errno=%d\n",i,errno);
  58. #endif
  59.     }
  60.     if ((i=sys$dassgn(inmlbx)) != SS$_NORMAL) {
  61.         perror("dassgn mlbx 2");
  62. #ifdef DEBUG
  63.         VDBG("shutdown dassgn()=%d, errno=%d\n",i,errno);
  64. #endif
  65.     }
  66. #else /* SYSIII SYSV */
  67.     if (unlink(SWCOMFILE)) perror(SWCOMFILE);
  68. #endif /* VMS SYSIII SYSV */
  69. #endif /* VMS BSD SYSIII SYSV */
  70.  
  71. #ifdef DEBUG
  72.     VDBG("shutdown exiting\n");
  73. #endif
  74.     exit(e);
  75. }
  76.